console_end_sync();
}
+
+void dump_execution_state(void)
+{
+ struct vcpu *v = current;
+ struct cpu_user_regs *regs = &v->arch.ctxt;
+
+ show_registers(regs);
+ if (regs->msr & MSR_HV) {
+ printk("In Xen:\n");
+ show_backtrace(regs->gprs[1], regs->pc, regs->lr);
+ }
+}
extern void show_backtrace_regs(struct cpu_user_regs *);
extern void show_backtrace(ulong sp, ulong lr, ulong pc);
-static inline void dump_execution_state(void)
+static inline void show_execution_state(struct cpu_user_regs *regs)
+{
+ show_registers(regs);
+}
+
+extern void dump_execution_state(void);
+
+static inline void dump_all_execution_state(void)
{
ulong sp;
ulong lr;
+ dump_execution_state();
sp = (ulong)__builtin_frame_address(0);
lr = (ulong)__builtin_return_address(0);
static inline void __force_crash(void)
{
- dump_execution_state();
+ dump_all_execution_state();
__builtin_trap();
}
static inline void debugger_trap_immediate(void)
{
- dump_execution_state();
+ dump_all_execution_state();
#ifdef CRASH_DEBUG
__builtin_trap();
#endif
static inline void unimplemented(void)
{
#ifdef VERBOSE
- dump_execution_state();
+ dump_all_execution_state();
#endif
}
-static inline void show_execution_state(struct cpu_user_regs *regs)
-{
- show_registers(regs);
-}
-
extern void __warn(char *file, int line);
#define WARN() __warn(__FILE__, __LINE__)
#define WARN_ON(_p) do { if (_p) WARN(); } while ( 0 )